شرح ShellExecute
 
راز شب 14
نرم افزار - شعر - عـکس
 
 

در اين مقاله طريقه اجرا يا باز کردن نرم افزار هاي خارج از محيط دلفي را با استفاده از تابع API ويندوز ShellExecute را ياد خواهيد گرفت.
چرا بايد برنامه ها را از دلفي اجرا کرد؟
شايد اين سوال براي شما پيش بيايد چرا بايد نرم افزارها را خارج از دلفي اجرا کرد. شما در يکي از موارد ذيل ممکن است نياز به اجراي يک نرم افزار خارج از دلفي داشته باشيد
• برنامه هاي نصب و عزل
• برنامه هاي سيستمي
• برنامه هاي اپليکيشن سرور
• برنامه هاي گزارش گيري
• و ....
موارد بسياري است که ممکن است شما بخواهيد از اين دستور استفاده کنيد که به چندي از آنها اشاره شد.

دستور ShellExecure
اين دستور به ما اجازه ميدهد که برنامه هاي ديگر را اجرا کنيم. نحو اين دستور به شکل ذيل مي باشد.

HINSTANCE ShellExecute(HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);

جدول زير پارامترهاي اين دستور را شرح ميدهد.

پارامتر ورودي/خروجي توضيحات

hwnd

ورودي

دستگيره يا هندل پنجره اصلي - براي گزارش خطاها حتما نياز است

lpOperation

ورودي

اشاره گر - اين پارامتر به نوع عمليات اشاره مي کند

lpFile

ورودي

اشاره گر به نام فايل اجرايي شما

lpParameters

ورودي

اشاره گر به پارامترهاي ارسالي به نرم افزار شما - در صورتي که پارامتر نباشد به صورت تهي بماند

lpDirectory

ورودي

دايرکتوري پيش فرض براي اجراي نرم افزار

nShowCmd

ورودي

اشاره گر تنظيم حالت نمايش برنامه بعد از اجرا


د ر صورتي که دستور shellexcute به درستي اجرا نشود يک کد خطا برمي گرداند شما مي توانيد با استفاده از تابع GetLastError خطا رخ داده را متوجه شويد. در صورتي که دستور Shellexecute به درستي اجرا شود کد خطاي بازگشتي بزرگتر از 32 مي باشد . در صورتي که کد خطا بازگشتي کمتر يا برابر با 32 باشد يک خطا رخ داده است. براي دريافت اطلاعات بيشتر در مورد کدهاي خطا اين دستور به MSDN مراجعه کنيد.
در دلفي شما به راحتي با استفاده از دستور SysErrorMessage مي توانيد آخرين خطا را بدست آوريد.نمونه کد زير روش استفاده از اين دستور را نشان داده است.

if ShellExecute(Handle, 'print', PChar('c:\log.txt'), nil, nil, SW_SHOWNORMAL) <= 32 then
ShowMessage(SysErrorMessage(GetLastError));


پارامتر lpOperation
با استفاده از دستور ShellExecute مي توان نرم افزارها و آبجکتهاي مختلف را اجرا کرد . مقادير قابل قبول براي پارامتر دوم اين دستور lpOperation به شرح جدول ذيل مي باشد.


lpOperation مقدار پارامتر

شرح

edit

باز کردن يک سند براي ويرايش در يک ويرايشگر

explore

مرورگر فايلهاي ويندوز براي مرور دايرکتوري خاص ...

find

جستجو به دنبال يک فايل در دايرکتوري خاص...

open

باز کردن يک فايل يا برنامه

print

چاپ يک سند

NULL

اطلاعات بيشتر در پايين ...



در صورتي که مقدار پارامتر lpOperation برابر با null قرار بگيرد براي باز کردن فايل يا برنامه از رجيستري ويندوز و از قسمت تخصيص فايلهاي اجرايي به پسوند فايلها براي اجراي دستور فوق استفاده مي گردد.
پارامتر nShowCmd
اين پارامتر به دستور ShellExecute مي گويد که بعد از اجراي يک برنامه آن را به چه حالتي نمايش بدهد. انواع حالات مختلف در جدول ذيل آمده است.



nShowCmd مقدار پارامتر

شرح

SW_HIDE

مخفي کردن پنجره

SW_MAXIMIZE

بزرگ کردن پنجره

SW_MINIMIZE

به حداقل رساندن پنجره

SW_RESTORE

فعال کردن يک پنجره در صورتي که به حالت حداقل يا حداکثر باشد

SW_SHOW

نمايش پنجره در حالت و موقعيت پيش فرض

SW_SHOWDEFAULT

نمايش پنجره به حالت پيش فرض در برنامه

SW_SHOWMAXIMIZED

فعال و به حداکثر رساندن پنجره

SW_SHOWMINIMIZED

فعال و به حداقل رساندن يک پنجره

SW_SHOWMINNOACTIVE

نمايش يک پنجره در حالت غير فعال و حداقل

SW_SHOWNA

نمايش يک پنجره در وضعيت فعلي

SW_SHOWNOACTIVATE

نمايش و فعال کردن يک پنجره - ويندوز اين پنجره را در حالت پيش فرض خود نمايش مي دهد.

SW_SHOWNORMAL

نمايش و فعال کردن پنجره به حالت عادي

وقتي که شما براي اولين بار يک برنامه را اجرا مي کنيد بايد از مقدار SW_SHOWNORMAL استفاده کنيد.

استفاده از دستور ShellExecute
درقسمت پايين چند نمونه از حالتهاي استفاده از اين دستور آورده شده است. شما مي توانيد اين دستورات را براي کار خود تغيير دهيد. در دلفي براي استفاده از اين دستور بايد دو يونيت Windows و ShellAPI در قسمت Uses قرار گرفته باشد.


اجراي برنامه Demo.exe از دايرکتوري C:\app

ShellExecute(Handle,NIL,PChar('C:\apps\demo.exe'), nil,nil,SW_SHOWNORMAL);

باز کردن فايل log.txt

ShellExecute(Handle,'open',PChar('c:\log.txt'), nil,nil,SW_SHOWNORMAL);

پخش فايل ending.mp3

ShellExecute(Handle,'play',PChar('c:\ending.mp3'), nil,nil,SW_SHOWNORMAL);

چاپ فايل log.txt

ShellExecute(Handle,'print',PChar('c:\log.txt'), nil,nil,SW_SHOWNORMAL);

باز کردن مروگر فايل ويندوز از C:\

ShellExecute(Handle,'explore',PChar('c:\'), nil,nil,SW_SHOWNORMAL);

ساخت يک نامه الکترونيکي جديد به واسطه Outlook Express

Procedure CreateEmail(Const EmailAddr, Subject, Body: String);
var
ConcatEmailStr: String;
Begin
ConcatEmailStr := EmailAddr + '?subject=' + Subject + '&body=' + Body;

ShellExecute(Handle,'open',PChar(ConcatEmailStr), nil, nil, SW_SHOWNORMAL);
end;

براي کسب اطلاعات بيشتر به آدرس ميکروسافت
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shellexecute.asp
مراجعه فرماييد.


نظرات شما عزیزان:

نام :
آدرس ایمیل:
وب سایت/بلاگ :
متن پیام:
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

 

 

 

عکس شما

آپلود عکس دلخواه:






ارسال شده در تاریخ : یک شنبه 19 شهريور 1390برچسب:, :: 22:21 :: توسط : رضا بوالحسنی

درباره وبلاگ
سلام به وبلاگه من خوش امدید لطفا ایمیلتون رو توی خبرنامه وبلاگم پبت کنید تا زمانی که آپ کردم بهتون خبر بدم و خواهشا توی نظر سنجی وبلاگم شرکت کنید . مرسی
آخرین مطالب
نويسندگان
پيوندها

تبادل لینک هوشمند
برای تبادل لینک  ابتدا ما را با عنوان راز شب 14 و آدرس raze-shabe14.LXB.ir لینک نمایید سپس مشخصات لینک خود را در زیر نوشته . در صورت وجود لینک ما در سایت شما لینکتان به طور خودکار در سایت ما قرار میگیرد.






ورود اعضا:

نام :
وب :
پیام :
2+2=:
(Refresh)

<-PollName->

<-PollItems->

خبرنامه وب سایت:





آمار وب سایت:  

بازدید امروز : 4
بازدید دیروز : 11
بازدید هفته : 4
بازدید ماه : 501
بازدید کل : 57315
تعداد مطالب : 79
تعداد نظرات : 396
تعداد آنلاین : 1